import { computeDays } from '../index'

/**
 *字符串拼接
 * @param arr 数组
 * @param separator 分隔符，默认/
 */
export function handleConcat(arr: Array<string>, separator = '/') {
  if (Object.prototype.toString.call(arr) !== '[object Array]') {
    return arr
  }
  arr = arr.filter((item) => {
    item = item + ''
    if (item.trim()) {
      return item
    }
  })
  if (arr.length < 2) {
    return arr
  }
  return arr.join(separator)
}
/**
 * 获取日期间隔
 * @param formula
 */
export function getDaysBetween(formula: any, type?: string) {
  let startDate, enDate
  if (formula.constructor === String && formula.indexOf('至') != -1) {
    startDate = formula.split('至')[0]
    enDate = formula.split('至')[1]
  } else if (formula.constructor === Array) {
    startDate = formula[0]
    enDate = formula[1]
  } else {
    // startDate = '2023-1-1';
    // enDate = formula;
  }
  // if (startDate && enDate) {
  //   const sDate = Date.parse(startDate);
  //   const eDate = Date.parse(enDate);
  //   if (sDate > eDate) {
  //     return 0; // 开始日期大于结束日期，返回0
  //   } else {
  //     let days = Math.ceil((eDate - sDate) / (1 * 24 * 60 * 60 * 1000))
  //     if (days === 0) { // 没选到时分秒时,选同一天等于 1
  //       days += 1
  //     }
  //     // return Math.ceil((eDate - sDate) / (1 * 24 * 60 * 60 * 1000)) + 1;
  //     return days;
  //   }

  // } else {
  //   return 0;
  // }
  return computeDays(startDate, enDate, type)
}
/**
 * 四舍五入保留指定位小数，默认2位
 * @param n 数值
 * @param p 小数位，默认2
 */
export function handleNumPrecision(n: any, p = 2) {
  if (typeof n == 'object') return n
  let num = parseFloat(n)
  const str = n.toString()
  if (isNaN(num)) return n
  if (str.indexOf('.') != -1) {
    num = +parseFloat(num.toFixed(p))
    return num
  }
  return n
}

/**
 * 四舍五入保留指定位小数，默认2位
 * @param n 数值
 * @param p 小数位，默认2
 */
export function handleNumSum(formula: Array<any>) {
  let sum = 0
  formula.reduce((cur, next) => {
    sum += Number(next || 0)
  }, sum)
  return sum
}

/**
 * 设置dom元素显示隐藏
 * @param domIds 需要隐藏显示的dom元素的id 的集合
 * @param currentVal 当前dom的值
 * @param hideVal 隐藏时的值
 */
export function handleDomVisible(domIds: string[], hideVal: any, currentVal: any) {
  domIds.forEach((id: string) => {
    const dom = document.getElementById(id)
    dom && (dom.style.display = currentVal == hideVal ? 'none' : '')
  })
}
/**
 * 金额求和
 *@param list 需要汇总的list
 * @param code 需要汇总的字段
 */

export function sumMoneyByCode(list: any, code: string) {
  if (list.length > 0) {
    return list.reduce((pre: any, cur: any) => {
      return pre + Number(cur[code])
    }, 0)
  }
}
